#include <memory>
#include <functional>
#include "TcpServer.hpp"
#include "Calcultor.hpp"
#include "protocol.hpp"
#include "Parse.hpp"
#include "Daemon.hpp"
// package一定会有完整的报文吗？？不一定把
// 不完整->继续读
// 完整-> 提取 -> 反序列化 -> Request -> 计算模块，进行处理



int main()
{
	ENABLE_FILE_LOG();
	// 设置为守护进程
	Daemon(false, false);
	// 实例化计算模块
	Calculator cal;
	// 实例化解析模块
	std::unique_ptr<Parse> parse = std::make_unique<Parse>([&cal](const Requst& req){
		return cal.Execut(req);
	});
	std::unique_ptr<TcpServer> tm = std::make_unique<TcpServer>([&parse](std::string& package){
		return parse->Entry(package);
	});
	tm->InitServer();
	tm->Start();
	return 0;
}